var glb = glb || {}
glb.Delegate = function(){
    return {
        create:function(obj, method){
            if(typeof(method) != "string" || typeof(obj) != "object" || typeof(obj[method]) != "function") return null;
            return function(){
                return obj[method].apply(obj, arguments);
            }
        }
    }
}();

glb.WidgetVideos = function ($) {
    var videos = function () {};
    videos.prototype = {
		animateInfoPlayer: function(obj, acao, valAnime) {
		    $("iframe").each(function(){
                if( $(this).attr('src').indexOf( obj.midiaId ) >= 0 ){
					var $videoSimples = $(this).parent().parent().find('#video-simples');
					var $chamadaRodape = $(this).parent().parent().parent().find('.chamada-rodape');
                    
                    if( acao === 'show' ){
                    	$videoSimples.fadeIn(500, function(){
                    		$videoSimples.css('z-index', '100001');
                    		$chamadaRodape.css('z-index', '100000');
                    	});
                    }else if( acao === 'hide' ){
                    	$videoSimples.fadeOut(500, function(){
                    		$videoSimples.css('z-index', '100001');
                    		$chamadaRodape.css('z-index', '100000');
                    	});
                    }
                }
            });
		},
		onPlayPlayer: function(obj, acao) {
		    this.animateInfoPlayer(obj, "hide");
		},
		onEndPlayer: function(obj) {
		    this.animateInfoPlayer(obj, "show");
		}
	}
	
    return videos;
}(jQuery);


function SliderDestaqueWide(config) {

    this.config = config || {};
    this.temSocialCounter = false;
    this.fadeDeBotoes();

    this.qtdItens = $('.chamada-destaque').length;    // quantidade inicial
    this.durantePaginacao = false;  // não tenta paginar quando a página está passando
    
    for (i=0; i<this.qtdItens; i++){
        $($('.chamada-destaque')[i]).attr('rel', i+1);
    }
    
    this.geraClones();
    
    if(this.qtdItens>1) {
        this.autoPaginar = true;
        this.liAtual = this.qtdItens;
    } else {
        this.autoPaginas = false;
        this.liAtual = 0;
    }    
    
    this.intervaloPaginacao = 10000;
    
    this.paginaComSetas = true
    
    $('.navegacao-chamada > a img').fadeTo(0, 0.1);
    
    if (this.config.linkNoChapeu) {
        $('.chamada-destaque .chapeu').each(
            function (index, item) {
                $(item).click( function () {
                    var link = $(this).parent().find('a').attr('href');
                    window.location = link;

                 });
         });
    
    }  
    this.desabilitaSeVazio();
    this.setLarguraUl();
    this.conectaHoverPaginacao();
    this.conectaPaginacao();
    this.criaBullets();
    this.conectaClickBullets();
    this.atualizaNumeros();
    if (this.autoPaginar) this.conectaAutoPaginar(this.intervaloPaginacao);
    if (this.paginaComSetas) this.conectaSetas();
    
    this.posicaoAtual();
    
    $('.navegacao-destaque').addClass("fonte-especial");
    $('.conteudo-destaque').css('visibility','visible');
};

SliderDestaqueWide.prototype.fadeDeBotoes = function() {
    if( this.config.botoesVisiveis ) {
        $('.navegacao-chamada').fadeTo(0, 1);
        $('.navegacao-destaque').fadeTo(0, 1);
        return;
    }
    $('.navegacao-chamada').fadeTo(0, 0);
    var that=this;
    $('.conteudo-destaque').mouseenter(function(){
        var navegacao_chamada=$(this).find('.navegacao-chamada');
        navegacao_chamada.stop().fadeTo(400, 1, 
            function () {
                if (that.config.removerOpacidade) { 
                   navegacao_chamada.css('opacity', null);
                }
             }
        );
    }).mouseleave(function(){
        $(this).find('.navegacao-chamada').stop().fadeTo(400, 0);
    });
}

SliderDestaqueWide.prototype.posicaoAtual = function() {
    return parseInt($($('.chamada-destaque')[this.liAtual]).attr('rel'));
};


SliderDestaqueWide.prototype.geraClones = function() {
    
    if (this.qtdItens > 1) {
        for (var i=1; i<=this.qtdItens; i++){
            var item = $($('.chamada-destaque')[$('.chamada-destaque').length-i]).clone();
            $('.chamada-destaque:first').before(item);
        }
        
        this.resetaMargem();
    };    
};

SliderDestaqueWide.prototype.desabilitaSeVazio = function() {
    if( this.qtdItens == 1 ) {
        $('.navegacao-destaque, .navegacao-chamada').remove();
        $('.destaque-wide').css({'left' : '0'});
    };
};

SliderDestaqueWide.prototype.atualizaNumeros = function() {
    $('.navegacao-destaque strong').html(this.posicaoAtual() + '/' + this.qtdItens);
};

SliderDestaqueWide.prototype.criaBullets = function() {
    var html = '';
    for (var i = 0; i < this.qtdItens; i++) {
        html += "<span>&bull;</span>";
    };
    $('.nav-bullets').html(html);    
    $('.nav-bullets span:first').addClass('on');
    var largura = ( $('.nav-bullets span:first').width() * this.qtdItens ) 
    $('.nav-bullets').width( largura );
};

SliderDestaqueWide.prototype.conectaClickBullets = function() {
    var self = this;
    $('.nav-bullets span').each(function(index, value) { 
        $(this).click(function(){
            self.vaiPara(index + 1);
        }); 
    });
};

SliderDestaqueWide.prototype.vaiPara = function(posicao) {

    if (posicao === this.posicaoAtual()) {
        //se a posicao desejada e a mesma que a atual, nao ha nada o que fazer =)
        return;
    };
    
    if (this.durantePaginacao) {
        return;
    };
    
    this.durantePaginacao = true;
    
    if (posicao > this.posicaoAtual()) {
        var direcao = 'direita';
        var posicoes = posicao - this.posicaoAtual();
        var left = "-=";
        left = left + (this.getLarguraLi() * (posicao-this.posicaoAtual()));
    } else {
        var direcao = 'esquerda';
        var posicoes = -1 * (posicao - this.posicaoAtual());
        var left = "+=";
        left = left + (this.getLarguraLi() * (-1*(posicao-this.posicaoAtual())));
    };

    this.liAtual = posicao;
        
    var self = this;
    
    
    $('.conteudo-destaque-total ul:not(:animated)').stop().animate({'left': left}, 700, function () {

        while (posicoes > 0) {
            if (direcao === 'direita') {
                var primeiro = $('.chamada-destaque:first').clone();
                $('.conteudo-destaque-total ul').append(primeiro);
                $('.chamada-destaque:first').remove();
            } else {
                var ultimo = $('.chamada-destaque:last').clone();
                ultimo.insertBefore( $('.chamada-destaque:first'));                
                $('.chamada-destaque:last').remove();
            };
            posicoes--;

        };
        
        self.liAtual = self.qtdItens;
        
        self.resetaMargem();
        self.atualizaNumeros();
        self.atualizaBullets();
        self.durantePaginacao = false;    
    
    });
    
};

SliderDestaqueWide.prototype.atualizaBullets = function() {
    $('.nav-bullets span').each(function() { 
        $(this).removeClass('on') 
    });
    $( $('.nav-bullets span')[this.posicaoAtual()-1] ).addClass('on');
};

SliderDestaqueWide.prototype.conectaHoverPaginacao = function() {
    $('.navegacao-chamada > a')
        .mouseenter(function() {
            $(this).find('img').fadeTo(0, 1);
        })
        .mouseleave(function() {
            $(this).find('img').fadeTo(0, 0.1);            
        });
};

SliderDestaqueWide.prototype.conectaPaginacao = function() {
    var that = this;
    $('.navegacao-chamada .nav-right').click(function () {
        that.paginar('right');
        return false;
    });
    $('.navegacao-chamada .nav-left').click(function () {
        that.paginar('left');
        return false;
    });
};

SliderDestaqueWide.prototype.paginar = function(destino) {
    
    if (this.durantePaginacao) {
        return;
    };
    this.durantePaginacao = true;
    
    if (destino == 'right') {
        var left = '-=';
        this.liAtual += 1;
    } else {
        var left = '+=';
        this.liAtual -= 1;
    };
    
    left = left + this.getLarguraLi();
    
    if (this.temSocialCounter){
       this.removeSocialCounter();                        
    }
    

    var that = this;
    $('.conteudo-destaque-total ul:not(:animated)').stop().animate({'left': left}, 700, function () {
        
        if (destino == 'right') {
            var primeiro = $('.chamada-destaque:first').clone();
            $('.conteudo-destaque-total ul').append(primeiro);
            $('.chamada-destaque:first').remove();
        } else {
            var ultimo = $('.chamada-destaque:last').clone();
            ultimo.insertBefore( $('.chamada-destaque:first'));
            $('.chamada-destaque:last').remove();
        };
        that.liAtual = that.qtdItens;
        
        that.resetaMargem();
        that.atualizaNumeros();
        that.atualizaBullets();
        that.durantePaginacao = false;
        
    });
    
};

SliderDestaqueWide.prototype.setLarguraUl = function() {
    var length = $('.chamada-destaque').length;
    $('.conteudo-destaque-total ul').css('width', (this.getLarguraLi() * length));
};

SliderDestaqueWide.prototype.getMargemUl = function() {
    return parseInt( $('.conteudo-destaque-total ul').css('left') );
};

SliderDestaqueWide.prototype.getLarguraLi = function() {
    return $('.chamada-destaque:first').outerWidth();
};

SliderDestaqueWide.prototype.getItemAtual = function() {
    return $($('.chamada-destaque')[this.liAtual]);
};

SliderDestaqueWide.prototype.getQuantidadeItens = function() {
    // sempre um a mais que o inicial, já que o último é colocado antes de todos
    // pra garantir uma navegação circular
    return this.qtdItens + 1;
};

SliderDestaqueWide.prototype.resetaMargem = function() {
    $('.conteudo-destaque-total ul').css('left', '-'+this.getLarguraLi()*this.qtdItens+'px');
};

SliderDestaqueWide.prototype.conectaAutoPaginar = function(tempo) {
    var that = this;
    var interval = setInterval(function() { that.paginar('right') }, tempo);
    
    $('.informacoes, .conteudo-destaque-total').hover(
        function() {
            clearInterval(interval);
        },
        function() {
            clearInterval(interval);
            interval = setInterval(function() { that.paginar('right') }, tempo);
        }
    ); 
};

SliderDestaqueWide.prototype.conectaSetas = function() {
    // keyCode para seta esquerda é 37 e para direita é 39
    var that = this;
    $(document).bind('keypress', function(e) {
        if (e.keyCode == 37){
            that.paginar('left');
        } else if(e.keyCode == 39) {
            that.paginar('right');
        };
    });
};

/* 
 * Funções usadas pelo consolidados social, quando tiver
 */

SliderDestaqueWide.prototype.contadorSocialCriado = function(socialCounterItens) {
        this.temSocialCounter = true;
        this.atualizaSocialCounter();
};

SliderDestaqueWide.prototype.atualizaSocialCounter = function() {
    // pega o consolidado do item atual e coloca na caixinha
    // do consolidado que fica exibido 
    var socialCounter = this.getItemAtual().find('.social-counter');
    if (!socialCounter.length) {
        this.ajustaChapeu();
        return;
    };
    var destaquePrincipalSocial = $('.conteudo-destaque').parent();
    var sc = socialCounter.clone();
    destaquePrincipalSocial.append(sc);
    this.ajustaChapeu();
    sc.animate({opacity: 1}, 350);
};

SliderDestaqueWide.prototype.ajustaChapeu = function() {
    // dependendo do tamanho da caixinha do consolidado tem
    // que ajusta o chapeu pra não ficar por cima
    if (this.getSocialCounterDeExibicao().length)
        var left = this.getSocialCounterDeExibicao().width() - 6;
    else
        var left = 0;
    this.getItemAtual().find('.chapeu').css('left', left+'px');
};

SliderDestaqueWide.prototype.getSocialCounterDeExibicao = function() {
    return $('.conteudo-destaque').parent().children('.social-counter');
};

SliderDestaqueWide.prototype.removeSocialCounter = function() {
    // quando é feita uma paginação, remove a caixinha do consolidado
    // e coloca de novo a atual
    var self = this;
    var sc = this.getSocialCounterDeExibicao();
    if (sc.length) {
        sc.fadeOut(350, function() {
            $(this).remove();
            self.atualizaSocialCounter();
        });
    } else {
        this.atualizaSocialCounter();
    };
};

var Duelo = {
	
	init:function() {
	
		this.Conteudo.init();
		this.Resultado.init();
		
		this.captchaLabel = 'Preencha com o texto acima';
		this.captchaErroIncorreto = 'Os caracteres digitados est\u00e3o incorretos';
		this.captchaErro = 'N\u00e3o foi possivel computar o seu voto';
		
		this.dueloId = $('.conteudo-duelo').attr('duelo-id');
		
		$(".opcao-captcha").hide();
        $(".glb-duelo .rodape-duelo .botao-voto").unbind().click(function() { 
			Duelo.exibeLabel();
        	Duelo.confirmar($(this));
        	return false; 
        });
        $(".glb-duelo .recaptcha_reload").unbind().click(function() {
        	Duelo.reloadCaptcha();
        	return false;
        });
        var submit = function() {
        	Duelo.votar();
        	return false;
        };
		var limpaLabel = function() {
			Duelo.limpaLabel();
			return false;
		};
		var exibeLabel = function() {
			Duelo.exibeLabel();
			return false;
		};
		
        $('.glb-duelo #form-duelo').unbind().submit(submit);
        $(".glb-duelo .captcha-confirma").unbind().click(submit);
		$('#recaptcha_response_field').unbind().focus(limpaLabel).blur(exibeLabel);
   	},
	
	/* Voto */
	
	// confirmar eh quando clica em votar em seguida mostra o captcha
	confirmar:function(a) {
		var opcao = a.attr('data-id-opcao');
		var lado = a.attr('data-lado-opcao');
		$('#form-duelo #id_opcao').val(opcao);
		this.mostraCaptcha(lado);
		this.configuraLado(lado);
	},
	configuraLado: function(lado){   
	    if( lado === "esquerda" ){
	        this.ladoVotado = "esquerda";
	        this.ladoOposto = "direita";
	    }else{
	        this.ladoVotado = "direita";
	        this.ladoOposto = "esquerda";
	    }   
	},
   	votar:function() {
        $('#form-duelo').ajaxSubmit({
		  type: 'get',
		  dataType: 'jsonp',
		  success: function(data) { Duelo.votado(data) }
		});
   	},
   	votado:function(data) {

        if (this.ladoVotado === "esquerda" ) {
            $('.duelo-resultado-voto .opcao-01').css('margin-top','0').show();
            $('.duelo-resultado-voto .opcao-02').css('margin-top','200px').hide();
        } else {
            $('.duelo-resultado-voto .opcao-01').css('margin-top','200px').hide();
            $('.duelo-resultado-voto .opcao-02').css('margin-top','0').show();
        }

   		if( data.toString()=='ok' ) {
            this.Conteudo.escondeDetalhes();
    		this.Resultado.mostrar();
    		this.Resultado.getParcial();
		} else if ( data.toString()=='recaptcha invalido' ) {
			this.reloadCaptcha(function() {
				this.exibeMensagemDeErro(this.captchaErroIncorreto);
			});
		} else {
			this.exibeMensagemDeErro(this.captchaErro);
		}
	},
	
	/* Captcha */
	
	mostraCaptcha:function(lado) {
		$('.opcao-captcha').removeClass('esquerda direita');
		$('.opcao-captcha').addClass(lado).show();
		this.reloadCaptcha();
	},
	reloadCaptcha:function(callback) {
		var self = this;
		callback = (callback == undefined) ? this.exibeLabel : callback;
		this.escondeCaptchaAntes();
		RecaptchaCreate.options.callback = function() { callback.call(self) };
		RecaptchaCreate.load('form-duelo');
		this.resizeCaptcha();
	},
	escondeCaptchaAntes:function() {
		$('#recaptcha_image').css({'position':'absolute', 'z-index':'-1'});
	},
	exibeCaptchaDepois:function() {
		$('#recaptcha_image').css({'position':'relative', 'z-index':'1'});
	},
	resizeCaptcha:function() {
		var self = this;
		var achou = function() {
			return $('#recaptcha_image img').size() > 0;
		}
		var resize = function() {
			$('#recaptcha_image img').css({'width':190,'height':40});
			$('#recaptcha_image').css({'width':190,'height':40});
			self.exibeCaptchaDepois();
		}
		if( achou() ) resize();
		var thread = setInterval(function() {
			if(achou()) {
				resize();
				clearInterval(thread);
			}
		},300);
	},
	captchaPreenchido:function() {
		var val = $('#recaptcha_response_field').val();
		return (val != this.captchaLabel && val != this.captchaErroIncorreto && val != this.captchaErro && val != "");
	},
	
	/* Mensages */
   	
   	exibeMensagemDeErro:function(mensagem) {
		$('#recaptcha_response_field').addClass('erro').val(mensagem);
   	},
	exibeLabel:function() {
		if (this.captchaPreenchido()) return;
		$('#recaptcha_response_field').removeClass('erro').val(this.captchaLabel);
	},
	limpaLabel:function() {
		if (this.captchaPreenchido()) return;
		$('#recaptcha_response_field').removeClass('erro').val('');
	}
}

Duelo.Resultado = {
    
    init: function() {
        this.mostraToolTip();
        $(".botao-novo-voto").unbind().click(function() {                                        
			Duelo.Resultado.votarNovamente();
			return false;
		});
    },
    
	mostraToolTip:function() {
		$('.ferramentas-acoes a, .ferramentas-compartilhar a').tipTip().find('img').removeAttr('alt');
	},
    
    mostrar: function() {
        $('.resultado-duelo').show();
        $('.duelo-resultado-voto').show();
        $('.opcao-duelo-01, .opcao-duelo-02, .opcao-captcha').hide();
        this.mostraPersonagemVotado();
        this.transparecePersonagemPerdedor();
    },
   	mostraPersonagemVotado: function(){
   	    $('.conteudo-duelo').css('overflow','visible');
        $('.personagem[side='+ Duelo.ladoOposto +']').css('height','433px');
   	},
   	transparecePersonagemPerdedor: function() {
        $('.mascara-personagem').removeClass('mascara-personagem-'+ Duelo.ladoVotado +'').addClass('mascara-personagem-'+ Duelo.ladoOposto +'').fadeTo(0, '0.8');
   	},
   	solidificaPersonagemPerdedor: function() {
        $('.mascara-personagem').removeClass('mascara-personagem-'+ Duelo.ladoVotado +'').addClass('mascara-personagem-'+ Duelo.ladoOposto +'').hide(); 	    
   	},
    
    getParcial: function() {
        this.escondeParcial();
        $.ajax({
            url: '/novelas/duelo/' + Duelo.dueloId + '/resultado/',
            dataType: 'json',
            success: function(json, textStatus) { 
                Duelo.Resultado.preencheParcial(json);
                Duelo.Resultado.mostraParcial();
            },
            error: function(xhr, status, error) {
                alert("Desculpe, ocorreu um erro. Tente atualizar a pÃ¡gina e tentar novamente.");
            }
        });
    },
    preencheParcial: function(json) {
        var vencedor = json['vencedor'];
        var perdedor = json['perdedor'];
        
        $('.nome-resultado[data-id-opcao='+ vencedor.id +'] span').html(vencedor.porcentagem+'%').parent().addClass('vencedor-parcial');
        $('.nome-resultado[data-id-opcao='+ perdedor.id +'] span').html(perdedor.porcentagem+'%');
        
        $('.grafico-pizza').addClass('pizza-' + vencedor.lado);
        $('.grafico-pizza span').attr('class', 'pizza-'+perdedor.porcentagem_em_5);
        
    },
    limpaParcial: function() {
        $('.vencedor-parcial').removeClass('vencedor-parcial');
    },
    escondeParcial: function() {
        $('.grafico-resultado > *').css('visibility', 'hidden');
    },
    mostraParcial: function() {
        $('.grafico-resultado > *').css('visibility', 'visible');
    },
    
	votarNovamente:function(a) {
	    this.restaurar();
	},
	restaurar: function() {
	    $('.resultado-duelo').hide();
		$('.duelo-resultado-voto').hide();
		$('.opcao-captcha').hide();
		$('.opcao-duelo-01, .opcao-duelo-02').show();
		this.limpaParcial();
        Duelo.Conteudo.mostraDetalhes();
		this.solidificaPersonagemPerdedor();
		this.restauraImagemPersonagens();
	},
	restauraImagemPersonagens: function() {
        $('.conteudo-duelo').css('overflow', 'visible');
        $('.personagem[side='+ Duelo.ladoOposto +']').css('height','');
        $('.conteudo-duelo').css('overflow', '');
	}
}

Duelo.Conteudo = {
	init:function() {
		this.aplicaHoverNoThumbnail();
		this.preparaCliqueDosLinks();	
	},
   	escondeDetalhes: function(){
   	    $('.titulo-duelo').hide();
   	    $('.descricao-duelo').hide();
   	    $('#thumbnail-duelo').parent().parent().hide();
   	    //$('.detalhes-duelo').removeClass('sem-detalhes').addClass('sem-detalhes');
   	    $('.detalhes-duelo').css({'padding-top':'65px','top':'0'})
   	    if ( this.mostrandoFoto() )  this.fecharFoto();
   	    if ( this.mostrandoVideo() ) this.fecharVideo();
   	},
   	mostraDetalhes: function(){
   	    $('.titulo-duelo').show();
   	    $('.descricao-duelo').show();
   	    $('#thumbnail-duelo').parent().parent().css('display', 'block');
   	    //$('.detalhes-duelo').removeClass('sem-detalhes');
   	    $('.detalhes-duelo').removeAttr('style');
   	},
	preparaCliqueDosLinks:function() {
		var self = this;
		$('a#thumbnail-duelo').click(function() {
			self.exibirConteudo($(this));
			return false;
		});
		$('a#hover-thumbnail-duelo').click(function() {
			$('a#thumbnail-duelo').click();
			return false;
		});
		$('#popin-video a').click(function() {
			self.fecharVideo($(this));
			return false;
		});
		$('#popin-foto a').click(function() {
			self.fecharFoto($(this));
			return false;
		});
	},
	aplicaHoverNoThumbnail:function() {
		$('.detalhes-duelo div.foto a').mouseover(function() {
			$('a#hover-thumbnail-duelo').removeClass('off').addClass('on');
		}).mouseout(function() {
			$('a#hover-thumbnail-duelo').addClass('off').removeClass('on');
		});
	},
	exibirConteudo:function(a) {
		if(a.attr('data-tipo')=='V') {
			this.exibirVideo(a);
		} else {
			this.exibirFoto(a);
		}
	},
	
	mostrandoVideo:function() {
	    return $('#popin-video').css('display') == 'block';
	},
	mostrandoFoto:function() {
	    return $('#popin-foto').css('display') == 'block';
	},
	fecharVideo:function(a) {
		$('#popin-video').hide();
		this.embed.destroy();
	},
	exibirVideo:function(a) {
		var parametros = { midiaId: a.attr('data-id-video'), banda: 'N', autoStart: true, escondeFimVideo: true, escondeTrocaBanda: true };
		this.embed = new GMCEmbed(parametros);
		this.embed.attach('popin-video-player');
		$('#popin-video').show();
	},
	fecharFoto:function(a) {
	    a = (a == undefined) ? $('#popin-foto-container a') : a;
		$('#popin-foto').hide();
		$('#cortina-foto').hide();
		$('#foto-duelo').attr('src',a.attr('about:blank'));
	},
	exibirFoto:function(a) {
		var self = this;
		$('#cortina-foto').show();
		this.carregaImagem(a.attr('data-src-foto'),function(img){
			self.centralizaFoto(img);
			$('#popin-foto').show();
		});
	},
	carregaImagem:function(src,callback) {	
		var img = new Image();
		var loaded = function() {
			var carregou = function() {
				return img.width > 0 && img.height > 0;
			};
			if( carregou() ) {
				callback(img); 
			} else {
				var thread = setInterval(function() {
					if( carregou() ) {
						callback(img);
						clearInterval(thread);
					}
				},300);
			}
		}
		img.onload = loaded;
		img.src = src;
	},
	centralizaFoto:function(img) {
		var largura = img.width > 854 ? 854 : img.width;
		var altura = img.height > 412 ? 412 : img.height;
		var larguraContainer = largura + (2*33)
		var topContainer = ( 433 - altura ) / 2;
		
		$('#foto-duelo').css({ 'width': largura, 'height': altura } );
		$('#popin-foto-container').css( { 'width': larguraContainer, 'margin-top': topContainer } );
		$('#foto-duelo').attr('src',img.src);	
	}
}

var WidgetDuelo = {
    init: function(dueloId, link) {
        this.url = '/novelas/duelo/'+dueloId+'/resultado/';
        this.link = link;
        this.atualizaParcial();
        
    },
    
    atualizaParcial: function() {
        $.ajax({
            url: this.url,
            dataType: 'json',
            success: function(json){ WidgetDuelo.defineRodape(json) },
            error: function(xhr, status, error) {}
        });
    },
    defineRodape: function(json) {
    	this.status = json['status'];
        this.exibe_porcentagem = json['exibe_porcentagem']

    	if ( this.status  == 'P' && this.exibe_porcentagem == '1' ){
            this.atualizaBarra(json);
        }else if (this.status  == 'P' && this.exibe_porcentagem == '0'){
        	this.naoMostraPorcentagem();
        } else if ( this.status == 'E' ){
            this.mostraEncerrado();
        }
    },
    
    naoMostraPorcentagem: function(json) {
        $('.rodape-duelo').empty();
        htmlSemPorcentagem='<div class="participe"><a href="'+this.link+'" class="botao-participe botao"><span>participe</span></a></div>'
        $('.rodape-duelo').html(htmlSemPorcentagem);
    },
    
    atualizaBarra: function(json) {
        var vencedor = json['vencedor'];
        var perdedor = json['perdedor'];
        var barraVencedor = $('.porcentagem[data-id-opcao='+vencedor.id+'] .barra-confronto');
        var barraPerdedor = $('.porcentagem[data-id-opcao='+perdedor.id+'] .barra-confronto');
        
        barraVencedor.children('.porcentagem').html(vencedor.porcentagem+'%');
        barraPerdedor.children('.porcentagem').html(perdedor.porcentagem+'%'); 
        
        barraVencedor.addClass('barra-grande').addClass('vencedor-parcial');
        
        if (perdedor.porcentagem < 45)
            barraPerdedor.addClass('barra-pequena');
        else
            barraPerdedor.addClass('barra-grande');
        
        barraVencedor.css('width', vencedor.porcentagem+'%');
        barraPerdedor.css('width', perdedor.porcentagem+'%');
        
    },
    
    mostraEncerrado: function() {
    	$('.rodape-duelo').empty();
    	htmlEncerrado='<div class="participe-encerrado"><span>Duelo encerrado</span><a href="'+this.link+'" class="link-participe">veja o vencedor »</a></div>'
    	$('.rodape-duelo').html(htmlEncerrado);
        
    }
    
}

var WidgetQuizPersonalidade = {
	init:function() {
		var self = this;
		$('.widget-teste-personalidade').each(function(index,elemento) {
			self.widget($(elemento));
		});
	},
	widget:function(elemento) {
		var local = elemento.find('.imagem-topo');
		if( local.size() == 0 ) return false;
		var imagens = local.attr('data-srcs-imagens').split("|");
		var indice = parseInt((Math.random()*100)%(imagens.length-1),10);
		local.css('background-image',"url(" + imagens[indice] +")");
	}
}
$(document).ready(function() {
	WidgetQuizPersonalidade.init();
});
var WidgetFalaGalera = {
	init:function() {
		var quantidade = $('.destaque-fala-galera tr').size();
		var indice = parseInt((Math.random()*100)%quantidade,10);
		
		var tr = $('.destaque-fala-galera tr').eq(indice);
		this.defineTamanhoDoTexto(tr);
		$('.destaque-fala-galera tr').eq(indice).show();
	},
	defineTamanhoDoTexto:function(tr) {
		var twit = tr.find('.twit');
		var texto = twit.find('p').text();
		if( texto.length < 31 ) {
			twit.addClass('twit-pequeno');
		} else if( texto.length < 101 ) {
			twit.addClass('twit-medio');
		} else {
			twit.addClass('twit-grande');
		}
	}	
}
$(document).ready(function() {
	WidgetFalaGalera.init();
} );
//# jQuery - Horizontal Accordion
//# Version 2.00.00 Alpha 1
//#
//# portalZINE(R) - New Media Network
//# http://www.portalzine.de
//#
//# Alexander Graef
//# portalzine@gmail.com
//#
//# Copyright 2007-2009

(function($) {
	$.hrzAccordion = {
       
	   
	   setOnEvent: function(i, container, finalWidth, settings){
			$("#"+container+"Handle"+i).bind(settings.eventTrigger,function() {			 
			   			
						var status = $('[rel='+container+'ContainerSelected]').data('status');
						
						if(status ==1 && settings.eventWaitForAnim === true){
						 return false;	
						}
						
						if( $("#"+container+"Handle"+i).attr("rel") != container+"HandleSelected"){
			    		
						  settings.eventAction;
							
							$('[id*='+container+'Handle]').attr("rel","");			   				
			   				
							$('[id*='+container+'Handle]').attr("class",settings.handleClass);
		
			   				$("#"+container+"Handle"+i).addClass(settings.handleClassSelected);
										   
			   		
							$("."+settings.contentWrapper).css({width: finalWidth+"px" });
							
							switch(settings.closeOpenAnimation)
							{
							case 1:
      
				   
						if($('[rel='+container+'ContainerSelected]').get(0)  ){
						$('[rel='+container+'ContainerSelected]').data('status',1);
							
							//current_width = $('[rel='+container+'ContainerSelected]').width();
							
							$('[rel='+container+'ContainerSelected]').animate({width: "0px",opacity:"0"}, { queue:true, duration:settings.closeSpeed ,easing:settings.closeEaseAction,complete: function(){	
				 																																	
							$('[rel='+container+'ContainerSelected]').data('status',0);																																											} ,step: function(now){
																																																		 							width = $(this).width();
						
							//new_width = finalWidth- (finalWidth  * (width/current_width));
							new_width = finalWidth - width;
							$('#'+container+'Content'+i).width(Math.ceil(new_width)).css("opacity","1");
							
							}});
		
						}else{
							$('[rel='+container+'ContainerSelected]').data('status',1);
								
							$('#'+container+'Content'+i).animate({width: finalWidth,opacity:"1"}, { queue:false, duration:settings.closeSpeed ,easing:settings.closeEaseAction,complete: function(){
																																																	  $('[rel='+container+'ContainerSelected]').data('status',0);	
																																																	  }});
							
								
							}
							
							break;
							case 2:
								$('[id*='+container+'Content]').css({width: "0px"});
								$('#'+container+'Content'+i).animate({width: finalWidth+"px",opacity:"1"}, { queue:false, duration:settings.openSpeed ,easing:settings.openEaseAction, complete: 
 settings.completeAction																																																									});						
							
							break;
							}

							$('[id*='+container+'Content]').attr("rel","");			
							$("#"+container+"Handle"+i).attr("rel",container+"HandleSelected");
							$("#"+container+"Content"+i).attr("rel",container+"ContainerSelected");					
							
						
						}
						
					});	
}
	    };
	
	$.fn.extend({
	   
		hrzAccordionLoop: function(options) {
			return this.each(function(a){  
				
				var container = $(this).attr("id") || $(this).attr("class");
				var elementCount = $('#'+container+' > li, .'+container+' > li').size();
				var settings = $(this).data('settings');
				
				variable_holder="interval"+container ;
				var i =0;
				var loopStatus  = "start";
				
				variable_holder = window.setInterval(function(){							
				
				$("#"+container+"Handle"+i).trigger(settings.eventTrigger);
				
				if(loopStatus =="start"){
						i = i + 1;
					}else{
						i = i-1;	
					}
					
					if(i==elementCount && loopStatus  == "start"){
						loopStatus  = "end";
						i=elementCount-1;

					}
					
					if(i==0 && loopStatus  == "end"){
						loopStatus  = "start";
						i=0;

					}
												},settings.cycleInterval);
				
				
				});
			},
		hrzAccordion: function(options) {
			this.settings = {
			eventTrigger	   		: "click",
			containerClass     		: "container",
			listItemClass      		: "listItem",					
			contentContainerClass  	: "contentContainer",
			contentWrapper     		: "contentWrapper",
			contentInnerWrapper		: "contentInnerWrapper",
			handleClass        		: "handle",
			handleClassOver    		: "handleOver",
			handleClassSelected		: "handleSelected",
			handlePosition     		: "right",
			handlePositionArray		: "", // left,left,right,right,right
			closeEaseAction    		: "swing",
			closeSpeed     			: 500,
			openEaseAction     		: "swing",
			openSpeed      			: 500,
			openOnLoad		   		: 2,
			hashPrefix		   		: "tab",
			eventAction		   		: function(){
								 	//add your own extra clickAction function here
								 	},
			completeAction	   		: function(){
								 	//add your own onComplete function here
								 	},
			closeOpenAnimation 		: 1,// 1 - open and close at the same time / 2- close all and than open next
			cycle			   		: false, // not integrated yet, will allow to cycle through tabs by interval
			cycleInterval	   		: 10000,
			fixedWidth				: "",
			eventWaitForAnim		: true
				
		};
	
		if(options){
			$.extend(this.settings, options);
		}
			var settings = this.settings;
			
			
			
			return this.each(function(a){    		
				
				var container = $(this).attr("id") || $(this).attr("class");			
				
				$(this).data('settings', settings);
				
				$(this).wrap("<div class='"+settings.containerClass+"'></div>");
			
				var elementCount = $('#'+container+' > li, .'+container+' > li').size();
												
				var containerWidth =  $("."+settings.containerClass).width();
				
				var handleWidth = $("."+settings.handleClass).css("width");
		
				handleWidth =  handleWidth.replace(/px/,"");
			    var finalWidth;
				var handle;
				
				if(settings.fixedWidth){
					finalWidth = settings.fixedWidth;
				}else{
					finalWidth = containerWidth-(elementCount*handleWidth)-handleWidth;
				}
				
				$('#'+container+' > li, .'+container+' > li').each(function(i) {
			
					$(this).attr('id', container+"ListItem"+i);
			   		$(this).attr('class',settings.listItemClass);
		       		$(this).html("<div class='"+settings.contentContainerClass+"' id='"+container+"Content"+i+"'>"
								 +"<div class=\""+settings.contentWrapper+"\">"
								 +"<div class=\""+settings.contentInnerWrapper+"\">"
								 +$(this).html()
								 +"</div></div></div>");
			   		
					if($("div",this).hasClass(settings.handleClass)){
					
					var html = $("div."+settings.handleClass,this).attr("id",""+container+"Handle"+i+"").html();
					$("div."+settings.handleClass,this).remove();
					
					 handle = "<div class=\""+settings.handleClass+"\" id='"+container+"Handle"+i+"'>"+html+"</div>";
					}else{
					 handle = "<div class=\""+settings.handleClass+"\" id='"+container+"Handle"+i+"'></div>";
					}
					
				
					
					if(settings.handlePositionArray){
						splitthis 				= settings.handlePositionArray.split(",");
						settings.handlePosition = splitthis[i];
					}
					
					switch(settings.handlePosition ){
						case "left":
						$(this).prepend( handle );
						break;
						case "right":	
						$(this).append( handle );	
						break;
						case "top":	
						$("."+container+"Top").append( handle );	
						break;
						case "bottom":	
						$("."+container+"Bottom").append( handle );	
						break;
					}					
				
					$("#"+container+"Handle"+i).bind("mouseover", function(){
						$("#"+container+"Handle"+i).addClass(settings.handleClassOver);
					});
			    
					$("#"+container+"Handle"+i).bind("mouseout", function(){
						if( $("#"+container+"Handle"+i).attr("rel") != "selected"){
							$("#"+container+"Handle"+i).removeClass(settings.handleClassOver);
						}
					});
					
				
					$.hrzAccordion.setOnEvent(i, container, finalWidth, settings);				
					
					if(i == elementCount-1){
						$('#'+container+",."+container).show();					
					}
					
					
								
					if(settings.openOnLoad !== false && i == elementCount-1){
							var location_hash = location.hash;
							location_hash  = location_hash.replace("#", "");	
							if(location_hash.search(settings.hashPrefix) != '-1' ){
							var tab = 1;
							location_hash  = location_hash.replace(settings.hashPrefix, "");
							}
							
							if(location_hash && tab ==1){
						 		$("#"+container+"Handle"+(location_hash)).attr("rel",container+"HandleSelected");
								$("#"+container+"Content"+(location_hash)).attr("rel",container+"ContainerSelected");		
								$("#"+container+"Handle"+(location_hash-1)).trigger(settings.eventTrigger);
												
							}else{
								$("#"+container+"Handle"+(settings.openOnLoad)).attr("rel",container+"HandleSelected");
							    $("#"+container+"Content"+(settings.openOnLoad)).attr("rel",container+"ContainerSelected");	
								$("#"+container+"Handle"+(settings.openOnLoad-1)).trigger(settings.eventTrigger);
							}					
					}	
				});	
				
				if(settings.cycle === true){
					$(this).hrzAccordionLoop();
				}
			});				
		}		
	});
})(jQuery);	


var ResumoDaSemana = {
    
    init: function(dia_da_semana) {
        $(".test3").hrzAccordion({
            containerClass : "container3",
            listItemClass: "listItem3",                 
            contentWrapper: "contentWrapper3",
            contentInnerWrapper : "contentInnerWrapper3",
            handleClass: "handle3",
            handleClassOver: "handleOver3",
            handleClassSelected : "handleSelected3",
            fixedWidth: "667",
            handlePositionArray: "left,left,left,left,left",
            openOnLoad: dia_da_semana
        });
        
        this.exibeItensDoCapituloAberto($('.handleSelected3'));
            $('.listItem3 .handle3').bind('click', function(event) {
            ResumoDaSemana.exibeItensDoCapituloAberto($(this));
        });
        
        this.desabitilizaInativos();
        this.consertaTipTip();
        this.removeBordarIE6();
    },
    
    exibeItensDoCapituloAberto: function(aberto) {
        $('.handle3 .social-counter').hide();
        $('.contentContainer .foto').addClass("foto-hack-ies");
        aberto.find('.social-counter').fadeIn();
        setTimeout(function() {
            aberto.parent().find('.contentContainer .foto').removeClass("foto-hack-ies");
        }, 300);
    },
    
    desabitilizaInativos: function() {
        $('.listItem3[rel="inativo"] .handle3').unbind('click');
    },
    
    consertaTipTip: function() {
        if ( $.browser.msie && $.browser.version != '6.0') {
            $('.listItem3 .conteudo-icones ul li a').tipTip().find('img').removeAttr('alt');
        } else if (!$.browser.msie) {
            $('.listItem3 .conteudo-icones ul li a').tipTip().find('img').removeAttr('alt');
        };
    },
    
    removeBordarIE6: function() {
        $('.test3 li').each(function(index){
            var classContainer = '.test3 #test3ListItem'+index;
            var atributoRel = $(classContainer).attr('rel');
            if (atributoRel === "inativo"){
                $(classContainer).find('.contentInnerWrapper3').css('border','none');
            };
        });
    },
    
    callbackSocialCounter: function(consolidados) {
        consolidados.each(function() {
            if (! $(this).parent().attr('rel') ) 
                $(this).find('.social-counter').hide();
        });
    }
};


/*
 * Mostra consolidado de likes nos destaques
 *
 * Modo de uso: 
 *
 * new SocialCounterGroup( [
 *      $('.elemento-1'),
 *      $('#elemento-2'),
 *      new SocialCounter( $('li.items'), function(items){ alert('done') } );
 * ], '/social/consolidado/');
 * 
 * Onde cada elemento passados devem possuir o atributo 
 * data-social-url
 *
 * Caso seja passado uma instância de SocialCounter como no exemplo,
 * a callback passada é chamada depois que *todos* os elementos
 * do seletor passado forem populados, e recebe como parâmetro o 
 * mesmo seletor.
 *
 */

function SocialCounter(selector,callback) {
    this.selector = selector;
    this.callback = callback;
}
function limpa_url(url) {
    if (url == null || url == "") {
        return url;
    }
    
    if (url.indexOf('javascript:')>-1) {
        return url.substring(url.indexOf('(')+2, url.indexOf(')')-1);
    }
    
    return url;
}

SocialCounter.prototype = {

    update: function(consolidated) {
        if (!consolidated) return;
        
        var self = this;
        this.selector.each(function() {
            var url = limpa_url($(this).attr('data-social-url'));
            if (!(url in consolidated)) 
                return;
            self.addConsolidated($(this), consolidated[url]);
        });
        
        if (this.callback) this.callback(this.selector);
    },

    addConsolidated: function(element, data) {
        var html = '<div class="social-counter">';
            html += '<div class="social-counter-labels">';
            if (data.comentarios > 0)
            	html += '<span class="social-counter-comentarios">' + data.comentarios + '</span>';
            html += '<span class="social-counter-likes">' + data.likes + '</span>';
	        html += '</div>';
	        html += '<div class="social-counter-curva"></div>';
	        html += '</div>';
        element.append(html);
        this.connectHoverEffect();
        element.find('.social-counter').fadeIn('slow');
    },
    
    connectHoverEffect: function() {
        $('.social-counter').hover(function() {
            $(this).parent().find('.borda-interna').addClass('pretty-hover');
        }, function() {
            $(this).parent().find('.borda-interna').removeClass('pretty-hover');
        });
    }

};


function SocialCounterGroup(group, consolidatedUrl) {
    this.group = group;
    this.fetchConsolidated(consolidatedUrl);
};
SocialCounterGroup.prototype = {
    
    fetchConsolidated: function(consolidatedUrl) {
        var self = this;
        $.getJSON(consolidatedUrl, function(data) {
            self.updateCounters(data);
        });
    },

    updateCounters: function(data) {
        for (i in this.group) {
            if (this.group[i] instanceof SocialCounter) 
                var socialCounter = this.group[i];
            else
                var socialCounter = new SocialCounter(this.group[i]);
            socialCounter.update(data);
        }
    }
}


var DestaqueQuotePersonagem = {
	tempoAnimacao: 7000, 
	init:function() {
		this.indice = 0;
		this.quantidade = $('.destaque-quote-personagem').size();
		$('.destaque-quote-personagem').eq(0).show();
		if( this.quantidade > 1 ) {
			$('.destaque-quote-personagem .conteudo').addClass('com-bolinhas');
			$('.destaque-quote-personagem').parent().append(this.bolinhas(this.quantidade));
			$('.destaque-quote-personagem').parent().append('<div class="cortina"></div><div class="cortina cortina-titulo"></div>');
			this.iniciaAnimacao();
			this.marcaBolinha();
		}	
	},
	bolinhas:function(quantidade) {
		var html = '<div class="bolinhas">';
		for(var i=0; i<quantidade; i++) {
			html += '<span>&bull;</span>';
		}
		html += '</div>';
		return html;
	},
	marcaBolinha:function() {
		var spans = $('.destaque-quote-personagem').parent().find('.bolinhas > span');
		spans.removeClass('on');
		spans.eq(this.indice).addClass('on');
	},
	incrementaIndice:function() {
		this.indice = this.indice+1 == this.quantidade ? 0 : this.indice+1;
	},
	iniciaAnimacao:function() {
		var self = this;
		this.thread = setInterval( function() {
			//console.log('vai animar');
			self.anima();
		}, this.tempoAnimacao );
	},
	anima:function() {
		var self = this;
		var destaques = $('.destaque-quote-personagem');
		var cortina = $('.cortina');
		cortina.fadeIn('slow',function() {
			if( destaques.parent().find(':animated').size() > 1 ) {
				return;
			}
			//console.log('resultado');
			destaques.eq(self.indice).hide();
			self.incrementaIndice();
			destaques.eq(self.indice).show();
			cortina.fadeOut('slow',function() {
				cortina.hide();
			});
			self.marcaBolinha();
		});
	}
}
$(document).ready(function(){;
	DestaqueQuotePersonagem.init();
});

(function(window){
	var re = /.*[A-Z]{3}(\d+)-.*/;
	
	var MatchIdVideo = function(urlVideo){
		var f = re.exec(urlVideo);
		return (f) ? f[1] : "";
	};
	
	window.MatchIdVideo = MatchIdVideo;
})(window || this);

function DestaqueVideos(box) {
    this.paginaAtual = null;

    // largura minima da area de paginacao, onde ficam as setas
    // e as bolinhas (uma pagina so)
    this.larguraMinimaAreaPaginacao = 112;
    this.larguraBolinha = 11;

    this.larguraPagina = 300;

    this.htmlBolinhaOn = '<span class="on" pagina={pagina}>•</span>';
    this.htmlBolinha = '<span pagina={pagina}>•</span>';
    this.htmlFechar = '<span class="fechar-video"></span>';
    this.htmlTitulo = '<span class="titulo-video"></span>';

    this.box = box;
    this.setPaginaAtual(box.find('#videos-pagina-0'));

    this.mostraPaginacao();
    this.bindPlayVideo();

    this.habilitaTipTip();
}
DestaqueVideos.prototype = {
    
    habilitaTipTip: function() {
        this.box.find('.area-video li a').tipTip({defaultPosition: "top", delay: 200});
    },

    /* Video */

    bindPlayVideo: function() {
        /* 
         * Conecta o click na miniatura de um vídeo com 
         * o play do vídeo clicado
         */
        var self = this;
        this.box.find('.video-miniatura a').click(function(event) {
            var urlVideo = $(this).attr('href');
            var tituloVideo = $(this).find('img').attr('alt');
            self.playVideo(urlVideo,tituloVideo);
            return false;
        });
    },

    playVideo: function(urlVideo,tituloVideo) {
        /*
         * Toca o vídeo, dada sua url
         */
        this.adicionaPlayer(urlVideo,tituloVideo);
        this.escondeMiniaturas(this.mostraPlayer);
    },

    adicionaPlayer: function(urlVideo,tituloVideo) {
        /*
         * Cria o elemento do player e adciona na pagina, mas não mostra
         */
        var self = this;

        var widgetVideos = new glb.WidgetVideos();
        var parametros = {
            midiaId: MatchIdVideo(urlVideo), 
            banda: 'I', 
            escondeTrocaBanda: true,
            autoStart: true
        };
        if (this.dominioCorreto()) {
            parametros['onPlay'] = glb.Delegate.create(widgetVideos, "onPlayPlayer");
            parametros['onTerminoDoVideo'] = glb.Delegate.create(widgetVideos, "onEndPlayer");
        };
        var embed = new GMCEmbed(parametros);
        embed.attach('destaque-videos-player');
        
        this.adicionaBotaoFechar();
        this.adicionaTitulo(tituloVideo);
    },

    adicionaBotaoFechar: function () {
        var self = this;
        var botaoFechar = $(this.htmlFechar);
        botaoFechar.insertBefore(this.box.find('#destaque-videos-player iframe'));
        botaoFechar.click(function() {
            self.fecharVideo();    
        });
    },

    adicionaTitulo: function (tituloVideo) {
        var self = this;
        var titulo = $(this.htmlTitulo);
        
        titulo.insertAfter(this.box.find('#destaque-videos-player iframe'));
        titulo.empty();
        titulo.html(tituloVideo);
    },

    escondeMiniaturas: function(callback) {
        /*
         * Esconde as miniaturas e a area de paginação
         */
        var self = this;
        this.box.find('.area-video').animate({opacity: 0}, function() {
            callback.call(self);
        });
        this.box.find('.area-paginacao').animate({opacity: 0});
    },

    mostraPlayer: function() {
        /*
         * Mostra o player, contando que o elemento exista, criado
         * pelo método adicionaPlayer()
         */
        this.box.find('#destaque-videos-player').animate({opacity: 1});
    },
    
    dominioCorreto: function() {
        /*
         * Verifica se o domínio *não* tem globoi.com, para que 
         * seja possível usar callbacks do player de vídeo
         */
        return !(document.domain.indexOf('globoi.com')!=-1);
    },
    
    fecharVideo: function() {
        var self = this;
        this.box.find('#destaque-videos-player').animate({opacity: 0}, function() {
            $(this).html('');
            self.box.find('.area-video, .area-paginacao').animate({opacity: 1});
        });
    },

    /* Paginação */
    
    mostraPaginacao: function() {
        if (this.numPaginas() > 1) {
            this.habilitaPaginacao('proxima');
        };
        this.criaBolinhas();
        this.box.find('.area-paginacao').css('opacity', '1');     
    },

    criaBolinhas: function() {
        /*
         * Cria o html das bolinhas, insere no local correto, e ajusta a 
         * largura da area onde elas ficam
         */
        var self = this;
        var html = '';
        var htmlBolinha = '';
        for (var i=0; i<this.numPaginas(); i++) {
            htmlBolinha = (i == 0 ? this.htmlBolinhaOn : this.htmlBolinha);
            html += htmlBolinha.replace('{pagina}', i)
        }
        this.box.find('.area-inferior .bolinhas').html(html);
        this.box.find('.area-inferior .bolinhas span').each(function(index, element) {
            $(element).click(function () { self.paginaPara(index) })
        });
        var largura = this.larguraMinimaAreaPaginacao + (this.numPaginas() * this.larguraBolinha);
        this.box.find('.area-paginacao').css('width', largura.toString() + 'px');
    },

    ativaBolinhaAtual: function() {
        var index = this.paginaAtual.attr('id').split('-')[2];
        this.box.find('.bolinhas span').removeClass('on').eq(index).addClass('on');
    },

    setPaginaAtual: function(pagina) {
        /*
         * Atualiza a referência pra pagina atual, adiciona a classe 
         * 'videos-pagina-atual' no elemento, e garante que nenhuma
         * outra pagina tem essa classe
         */
        this.box.find('.area-video ul').removeClass('videos-pagina-atual');
        this.paginaAtual = pagina;
        this.paginaAtual.addClass('videos-pagina-atual');
    },
    
    getPaginaAtualNum: function() {
        return parseInt(this.paginaAtual.attr('id').replace('videos-pagina-','')); 
    },

    habilitaPaginacao: function(direcao) {
        /*
         * Permite o clique no botao de pagina pra ``direcao``.
         * ``direcaao`` deve ser "anterior" ou "proxima"
         */
        this._validaDirecao(direcao);
        var classe = '.seta-' + direcao; 
        var self = this;
        this.box.find(classe).removeClass('desabilitado').unbind('click').click(function(){
            self.pagina(direcao);
        });
    },

    desabilitaPaginacao: function(direcao) {
        /*
         * Não permite o clique no botao de pagina pra ``direcao``.
         * ``direcaao`` deve ser "anterior" ou "proxima"
         */
        this._validaDirecao(direcao);
        var classe = '.seta-' + direcao; 
        this.box.find(classe).addClass('desabilitado').unbind('click');
    },

    habilitaPaginacaoQueTiver: function() {
        if (this.temProximaPagina())
            this.habilitaPaginacao('proxima');
        else
            this.desabilitaPaginacao('proxima');

        if (this.temPaginaAnterior())
            this.habilitaPaginacao('anterior');
        else
            this.desabilitaPaginacao('anterior');
    },
    
    pagina: function(direcao) {
        this._validaDirecao(direcao);

        if (direcao == 'proxima')
            this.paginaPara(this.getPaginaAtualNum() + 1);
        else if (direcao == 'anterior')
            this.paginaPara(this.getPaginaAtualNum() - 1);
    },
    
    paginaPara: function(pagina) {
        var paginaAtual = this.getPaginaAtualNum();
        var self = this;

        if (pagina < 0 || pagina >= this.numPaginas() || paginaAtual == pagina) return;

        // descobre o numero de pixels que eu preciso me mover, a direcao
        // eh defina pelo "sinal" abaixo
        var left = Math.abs(paginaAtual-pagina) * this.larguraPagina;

        var destino = this.box.find('.area-video #videos-pagina-'+pagina);
        this.setPaginaAtual(destino);
        
        if (paginaAtual > pagina)
            var sinal = '+';
        else if (paginaAtual < pagina)
            var sinal = '-';
        
        this.box.find('.area-video ul').animate({left: sinal+'='+left}, function() {
            self.habilitaPaginacaoQueTiver();
            self.ativaBolinhaAtual();
        });
    },

    numPaginas: function() {
        return this.box.find('.area-video ul').length;
    },

    temProximaPagina: function() {
        return (this.paginaAtual.next().length ? true : false);   
    },

    temPaginaAnterior: function() {
        return (this.paginaAtual.prev().length ? true : false);   
    },

    _validaDirecao: function(direcao) {
        if (direcao !== 'anterior' && direcao !== 'proxima')
            throw 'Direcao invalida, use "anterior" ou "proxima"';
    }
}

// mouseover titulos destaque primario capitulo
    $(document).ready(function(){
        var corNovela = $('.cor-link').css('color');
        var corNovelaHover = $('.cor-link-hover').css('color');
        var fonte = $('body').css("font-family");
        $('.conteudo-generico').mouseenter(function(){
            $(this).find(".titulo").css({'color': corNovelaHover});
            $(this).find(".titulo").addClass("fonte-especial");   
        }).mouseleave(function(){
            $(this).find(".titulo").css({'color': corNovela});
            $(this).find(".titulo").addClass("fonte-especial");
        });
    });
